local packer = require("packer")
packer.startup(function(use)
  -- Packer 可以管理自己本身
  use("wbthomason/packer.nvim")

  -- nvim-tree (新增)
  use({ "kyazdani42/nvim-tree.lua", requires = "kyazdani42/nvim-web-devicons" })

  -- telescope （新增）
  use({ "nvim-telescope/telescope.nvim", requires = { "nvim-lua/plenary.nvim" } })

  -- 复制高亮
  use("machakann/vim-highlightedyank") -- Configurations for Nvim LSP

  -- lsp 插件
  use("neovim/nvim-lspconfig") -- Configurations for Nvim LSP
  -- lsp 自动安装语言server
  use("williamboman/nvim-lsp-installer")
  use("j-hui/fidget.nvim") -- lsp 进度条
  use("vim-scripts/ReplaceWithRegister") -- lsp 进度条

  use("tpope/vim-repeat") -- vim 重复操作
  use("tpope/vim-surround")

  use("christoomey/vim-tmux-navigator") -- lsp 进度条

  use("voldikss/vim-translator") -- 翻译插件

  --注释插件
  use {
    'numToStr/Comment.nvim',
    config = function()
      require('Comment').setup()
    end
  }

  -- 代码格式化
  -- use("mhartington/formatter.nvim")
  use({ "jose-elias-alvarez/null-ls.nvim", requires = "nvim-lua/plenary.nvim" })

  use({ "jose-elias-alvarez/nvim-lsp-ts-utils", requires = "nvim-lua/plenary.nvim" })
  -- JSON 增强
  use("b0o/schemastore.nvim")

  use("hrsh7th/nvim-cmp")
  -- snippet 引擎
  use("hrsh7th/vim-vsnip")
  -- 补全源
  use("hrsh7th/cmp-vsnip")
  use("hrsh7th/cmp-nvim-lsp") -- { name = nvim_lsp }
  use("hrsh7th/cmp-buffer") -- { name = 'buffer' },
  use("hrsh7th/cmp-path") -- { name = 'path' }
  use("hrsh7th/cmp-cmdline") -- { name = 'cmdline' }

  -- 常见编程语言代码段
  use("rafamadriz/friendly-snippets")

  use({ "akinsho/bufferline.nvim", requires = { "kyazdani42/nvim-web-devicons", "moll/vim-bbye" } })
  use({ "nvim-lualine/lualine.nvim", requires = { "kyazdani42/nvim-web-devicons" } })

  -- use("h-hg/fcitx.nvim") --linux下自动切换输入法
  -- use("zhaosheng-pan/vim-im-select") --linux下自动切换输入法
  --
  use("ggandor/leap.nvim")
  use("justinmk/vim-sneak")
  use("folke/tokyonight.nvim")
  -- copilot ai 补全
  use("github/copilot.vim")

  -- golang 环境
  use("ray-x/go.nvim")
  use("ray-x/guihua.lua") -- recommanded if need floating window support
  -- 语法树
  use({
    "nvim-treesitter/nvim-treesitter",
    run = function()
      local ts_update = require("nvim-treesitter.install").update({ with_sync = true })
      ts_update()
    end,
  })
  -- 语言服务器

  -- md 预览
  -- install without yarn or npm
  use({
    "iamcco/markdown-preview.nvim",
    run = function()
      vim.fn["mkdp#util#install"]()
    end,
  })


  use("Konfekt/vim-wsl-copy-paste")


end)

-- 每次保存 plugins.lua 自动安装插件
pcall(
  vim.cmd,
  [[
    augroup packer_user_config
    autocmd!
    autocmd BufWritePost plugins.lua source <afile> | PackerSync
    augroup end
  ]]
)
